<?php
class Gm_getUrl {
	function getUrl($serverIpPort, $cmd, $userName, $params = array()) {
		$paramsStr = "";
		if ($params) {
			foreach ($params as $key => $val) {
				$param = $key . ":" . $val;
				if ($paramsStr) {
					$paramsStr .= ";" . $param;
				} else {
					$paramsStr = $param;
				}
			}
		}
		if ($paramsStr) {
			$url = "http://{$serverIpPort}/{$cmd}?params={$paramsStr}&user={$userName}";
		} else {
			$url = "http://{$serverIpPort}/{$cmd}?user={$userName}";
		}
		
		$date = date("Y-m-d");
		$log = ROOT_PATH . "/urlLogs/" . "url.log." . $date;
		
		// 记录中文log
		$logUrl = urldecode($url);
		
		$myIp =  realIp();
		
		MooFile::write($log, date('Y-m-d H:i:s') ."--" . 'ip' ."--" . $myIp . "--". $logUrl."\n", true);
		return $url;
	}
}


/**
 * 获取IP
 * @return NULL|Ambigous <string, NULL>
 */
function realIp() {
	static $realip = NULL;
	if ($realip !== NULL) {
		return $realip;
	}

	if (isset($_SERVER)) {
		if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
			$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

			//取X-Forwarded-for中第一个非unknown的有效Ip字符串
			foreach ($arr as $ip) {
				$ip = trim($ip);
				if ($ip != 'unknown') {
					$realip = $ip;
					break;
				}
			}
		} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
			$realip = $_SERVER['HTTP_CLIENT_IP'];
		} else {
			if (isset($_SERVER['REMOTE_ADDR'])) {
				$realip = $_SERVER['REMOTE_ADDR'];
			} else {
				$realip = '0.0.0.0';
			}
		}
	} else {
		if (getenv('HTTP_X_FORWARDED_FOR')) {
			$realip = getenv('HTTP_X_FORWARDED_FOR');
		} elseif (getenv('HTTP_CLIENT_IP')) {
			$realip = getenv('HTTP_CLIENT_IP');
		} else {
			$realip = getenv('REMOTE_ADDR');
		}
	}

	$onlineip = null;
	preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
	$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
	return $realip;
}

